package com.qianlima.upload.domain.service;

import com.qianlima.upload.common.dto.FileDto;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * @description: 文件上传服务
 * @author：allms
 * @date: 2023/3/22 15:08
 */
public interface IFileService {
    /**
     * 上传普通文件
     *
     * @param multipartFileList 文件列表
     * @return
     * @throws IOException
     */
    List<String> upload(List<MultipartFile> multipartFileList) throws IOException;

    /**
     * 大文件上传，分片上传
     *
     * @param fileDto 文件信息
     * @param file    文件
     * @param isFile  是否文件
     * @return 返回文件路径
     * @throws IOException
     * @throws InterruptedException
     */
    String fragUpload(FileDto fileDto, boolean isFile, MultipartFile file) throws IOException, InterruptedException;

    /**
     * 检查分片
     *
     * @param key        分片key
     * @param shardTotal 分片总大小
     * @return 文件信息
     */
    FileDto checkFrag(String key, Integer shardTotal);

    String getType();

}
